package com.dingwen.treasure.business.model.dto;

import cn.hutool.json.JSONObject;
import lombok.*;
import lombok.experimental.Accessors;

import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * 支付 DTO
 *
 * @author dingwen
 * @date 2022/04/26
 */
@Builder
@Getter
@Setter
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class PayDto {

    /**
     *消费入参： 执行请求
     */
    private Supplier<String> supplierRequest;

    /**
     * 获取三方返回结果标识码Code
     */
    private String resultCodeKey;


    /**
     * 判断三方返回结果（成功或者失败）
     */
    private Predicate<String> predicateResult;


    /**
     * 当成功调用三方执行请求后执行
     */
    private Consumer<JSONObject> consumerSuccess;


    /**
     * 当调用三方发生异常后执行
     */
    private Consumer<JSONObject> consumerFail;


    /**
     * 当成功调用三方之后对相应数据的处理
     */
    private Consumer<JSONObject> consumerRawData;
}
